package main

import (
	"fmt"
	"runtime"
	"sync"
	"time"
)

var sync_wg sync.WaitGroup

func test1() {
	for i := 0; i < 8; i++ {
		fmt.Println("test1() 你好,golang!!!-", i)
		time.Sleep(time.Millisecond * 200)
	}
	sync_wg.Done() // 协程计数器-1
}

func test2() {
	for i := 0; i < 8; i++ {
		fmt.Println("test2() 你好,golang!!!-", i)
		time.Sleep(time.Millisecond * 200)
	}
	sync_wg.Done() // 协程计数器-1
}

func main() {
	sync_wg.Add(2) // 协程计数器+1
	go test1()     // 表示开启一个协程
	go test2()     // 表示开启一个协程
	for i := 0; i < 5; i++ {
		fmt.Println("main() 你好,golang!!!-", i)
		time.Sleep(time.Millisecond * 100)
	}

	cpuNum := runtime.NumCPU() // 获取当前计算你上面的cpu个数
	fmt.Printf("我的电脑是%d核\n", cpuNum)
	// runtime.GOMAXPROCS(cpuNum - 1) // 可以自己设置使用多个cpu
	sync_wg.Wait() // 主进程等待
	fmt.Println("主进程退出")
}
